#ifndef __aWindowImpl__h__included__
#define __aWindowImpl__h__included__

#include "neiderra/core/Base.h"
#include "neiderra/render/iRenderTarget.h"
//#include "aRenderer.h"
//#include "Win32GLRenderImpl.h"
//#include "win32WndClass.h"

#include "Window.h"

#include <string>
#include <iostream>

//using namespace neiderra::core::gui;

namespace neiderra {

	namespace rendering 
	{
		class iRenderer;
	}

	using rendering::iRenderer;
	
	namespace gui {
	
		//! Window Implementor interface
		class GUIWindowImpl: public Base {
		public:
			GUIWindowImpl(Core* core, GUIWindow* container): Base(core) {
				container_ = container;
			}
		
			virtual void show()=0;
		
			virtual void update()=0;
		
			virtual void swapBuffers()=0;
		
			virtual void setRenderer(iRenderer*)=0;
		
			virtual ~GUIWindowImpl() {}
		
			virtual unsigned getWidth()=0;
			virtual unsigned getHeight()=0;
		
			virtual long getID()=0;
		
			void setDimentions(unsigned width, unsigned height){}
		
			GUIWindow* getContainer()
			{ return container_; }
		//		{ width_ = width; height_ = height; }
		
		protected:
			unsigned width_, height_;
			GUIWindow* container_;
		};

	}
}

#endif
